3.1.3. გაანგარიშებების შესრულება DataGrid-ში
მართვის ელემენტის დაპროექტებისას დავამატოთ ახალი სვეტი. პროგრამის შესრულების დროს მოვახდინოთ გაანგარიშება და შედეგი ჩავწეროთ ამ სვეტში.
დავუშვათ, მონაცემების ბაზიდან ამოარჩიეთ საქონლის დასახელება, შეძენის ფასი. მართვის ელემენტის დაპროექტებისას დაამატეთ ახალი სვეტი და დაარქვით მას „რეალიზაციის ფასი”. დავუშვათ, საჭიროა შეძენის ფასი გაზარდოთ 15%-ით.
იმისათვის, რომ ველების გენერაცია პროგრამული კოდით განხორციელდეს (და არა ავტომატურად ცხრილის ჩატვირთვისას), საჭიროა მართვის ელემენტის DataGrid თვისება AutoGenerateColumns=False
html კოდი შემდეგია
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<asp:DataGrid ID="DataGrid1" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="None" Style="font-family: AcadNusx" AutoGenerateColumns="False">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditItemStyle BackColor="#2461BF" />
<SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<AlternatingItemStyle BackColor="White" />
<ItemStyle BackColor="#EFF3FB" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundColumn DataField="das" HeaderText="dasaxeleba"></asp:BoundColumn>
<asp:BoundColumn DataField="sfasi" HeaderText="SeZenis fasi"></asp:BoundColumn>
<asp:BoundColumn DataField="rfasi" HeaderText="realizaciis fasi"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
<br /> <br /></div></form>
</body>
</html>
პროგრამული კოდი შემდეგია:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim ds As DataSet = New DataSet()
Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" _
& Server.MapPath("ekonfakulteti.mdb")
Dim da As OleDbDataAdapter = New _
OleDbDataAdapter("SELECT das, sfasi FROM tbsaqoneli", conn)
da.Fill(ds)
Dim dc As DataColumn
dc = New DataColumn("rfasi", Type.GetType("System.Single"))
dc.Expression = "sfasi * 1.15"
ds.Tables(0).Columns.Add(dc)
DataGrid1.DataSource = ds.Tables(0).DefaultView
DataGrid1.DataBind()
End If
End Sub
დახარისხება DataGrid-ში
ჩვენი ამოცანაა მართვის ელემენტში DataGrid არსებული ცხრილის სვეტის დასახელებაზე დაწკაპუნებით განხორციელდეს მონაცემების დახარისხება. ამ ამოცანის გადასაწყვეტად:
- მართვის ელემენტის დაპროექტებისას მიუთითეთ სვეტები, რომლებითაც შესაძლებელია დახარისხება;
- შექმენით მონაცემების ბაზასთან დაკავშირების პროცედურა, და დააკავშირეთ იგი გვერდის ჩატვირთვის მოვლენასთან. ამავე დროს შემოწმეთ ამ გვერდის არსებობა PostBack-ზე და მისი არსებობის შემთხვევაში გამოიძახეთ ჩვენს მიერ შექმნილი პროცედურა BindData;
- შექმენით პროცედურა, რომელიც დაკავშირებუ-ლია DataGrid-ში მოვლენასთან OnSortCommand არგუმენტთან.
3.1.4. წინასწარ მითითებულ ველებში დახარისხება ზრდადობით ან კლებადობით
დავიტანოთ DataGrid მართვის ელემენტი გვერდზე. სისტემის მიერ ავტომატურად გენერირებული html კოდი შემდეგია:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<asp:DataGrid ID="DataGrid1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
Font-Names="AcadNusx">
<Columns>
<asp:TemplateColumn HeaderText="gvari" SortExpression="gvari">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.gvari") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="saxeli" SortExpression="saxeli desc">
‘ velisTvis “saxeli” miTiTebulia, rom daxarisxeba ganxorcieldes klebadobiT
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.saxeli") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<br /></div></form>
</body>
</html>
დახარისხების განსახორციელებლად საჭიროა:
- მონაცემების ბაზასთან დაკავშირება;
- მართვის ელემენტის შევსება მონაცემებით;
- ცხრილში სვეტების დასახელებაზე დაწკაპუნე-ბისას დახარისხება.
3.1.5. მონაცემების წყაროსთან დაკავშირება
Private Sub binddata()
Dim ds As DataSet = New DataSet()’obieqtTa klasis DataSet-ის ეგზემპლარის შექმნა
Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;data source= Server.MapPath("ekonfakulteti.mdb")’ მონაცემების ბაზასთან დაკავშირება
Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT gvari, saxeli FROM tbstudentiz", conn) ’ OleDbDataAdapter-ის დაკავშირება მონაცემების ბაზასთან და Fill(ds) OleDbDataAdapter-ის მონაცემებით შევსება ობიექტიდან DataSet
ds.Tables(0).DefaultView.Sort = ViewState("sort")
DataGrid1.DataSource = ds.Tables(0).DefaultView
DataGrid1.DataBind()’ ცხრილის შევსება მონაცემებით
End Sub
3.1.6. გვერდის ჩატვირთვისთანავე მართვის ელემენტის შევსება მონაცემებით
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
binddata()
End If
End Sub
3.1.7. დახარისხება
Protected Sub DataGrid1_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles DataGrid1.SortCommand
Me.ViewState("sort") = e.SortExpression
binddata()
End Sub